package cn.mujiankeji.mbrowser.界面.小窗页

import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import cn.mujiankeji.mbrowser.界面.框架.小窗视图.小窗状态
import cn.mujiankeji.mbrowser.界面.组件.布局.IOS窗口布局
import cn.mujiankeji.mbrowser.界面.组件.布局.底部窗口布局
import cn.mujiankeji.mbrowser.界面.组件.配置列表.配置组
import cn.mujiankeji.mbrowser.界面.组件.配置列表.配置组视图
import cn.mujiankeji.mbrowser.界面.组件.配置列表.配置项

class 配置小窗状态(
                   val 窗口样式 : Int = 0,
                   val 标题 : String ?= null,
                   val 提交 : (()->Unit) ?= null,
                   val 配置列表 : MutableList<配置组> = ArrayList()) : 小窗状态(){

    fun group(name : String ?= null,items: List<配置项>){
        配置列表.add(配置组(name).also {
            it.配置项列表.addAll(items)
        })
    }

    fun 关闭(){
        super.销毁小窗()
    }
}

@Composable
fun 配置小窗实现(state : 配置小窗状态){
    if (state.窗口样式 == 0){
        底部窗口布局({state.关闭()})
        {
            内容列表(state)
        }
    }
    else {
        IOS窗口布局(销毁 = {state.关闭()},
            提交 = {
                state.提交?.invoke()
                state.关闭()
            }){
            内容列表(state)
        }
    }
}

@Composable
fun 内容列表(state : 配置小窗状态){
    LazyColumn(Modifier.fillMaxSize()){
        items(state.配置列表)
        {
            配置组视图(it)
        }
    }
}
